<?php

namespace app\listener\notify;

use app\event\SupplierNotifySuccess;
use app\model\CouponOrder;

/**
 * 供应商回调成功 统一在这处理  ps:其他的业务逻辑不要在这里写，可单独起个事件监听
 * 这里只处理回调成功的更改状态
 */
class CouponOrderUnionSuccess
{

    /**
     * 事件监听处理
     * @param SupplierNotifySuccess $event
     * @return mixed
     */
    public function handle($event) {

        $couponOrder = $event->couponOrder;


        if ($couponOrder->serv_type == PRODUCT_COUPON_SERV) {
            return true;
        }

        // 小类型配置
        if ($couponOrder->type != CouponOrder::TYPE_COUPON_SELF_EMPLOYED) {
            return true;
        }

        if ($couponOrder->status == CouponOrder::C_STATUS_RECHARGE_SUCCESS) {
            return true;
        }

        $this->updateSuccessStatus($couponOrder);

    }

    /**
     * 供应商 回调 成功状态更改
     * @param CouponOrder $couponOrder
     * @return void
     */
    public function updateSuccessStatus(CouponOrder $couponOrder) {
        $couponOrder->status = CouponOrder::C_STATUS_RECHARGE_SUCCESS;
        $couponOrder->supplier_status = CouponOrder::SUPPLIER_STATUS_SUCCESS;

        //等待结算了
        $couponOrder->agent_settle_status = CouponOrder::C_AGENT_SETTLE_STATUS_WAIT;
        $couponOrder->settled_at = getSettleDate($couponOrder->pay_time);//下个月25号


        //完成时间
        if (empty($couponOrder->order_finish_at)) {
            $couponOrder->order_finish_at = date('Y-m-d H:i:s');
        }


        $couponOrder->save();
    }
}